Method: Polyphony::Queue#<<

Defined in:
ext/polyphony/queue.c

#push(value) ⇒ Queue #enq(value) ⇒ Queue #<<(value) ⇒ Queue

Adds the given value to the queue's end. If the queue is capped and full, the call will block until a value is removed from the queue.

Parameters:

  • value (any)

    value to be added to the queue

Returns:



137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'ext/polyphony/queue.c', line 137

VALUE Queue_push(VALUE self, VALUE value) {
  Queue_t *queue;
  GetQueue(self, queue);

  if (queue->closed)
    rb_raise(cClosedQueueError, "queue closed");

  if (queue->capacity) capped_queue_block_push(queue);

  queue_schedule_first_blocked_fiber(&queue->shift_queue);
  ring_buffer_push(&queue->values, value);

  return self;
}